<?php

	class BoxcontentsPage extends ArticlesPage {
		
		function BoxcontentsPage() {
			
			parent::BaseAdminPage("BoxcontentsPage");
		}
		
		protected function getArticlesHasLanguageTemplate($articleRecord)
		{
			$tpl = BaseAdminPage::loadTemplateFile("boxcontent_articles_haslanguage.tpl.html");
			$tpl->setVariable('boxcontent_link_dellangarticle', HydraLinkProvider::getLink('delBoxcontent', array('articleid'=>$articleRecord['id'], "langcode"=>AdminBase::getCurrentEditlang())));
			$tpl->setVariable('boxcontent_link_delfullarticle', HydraLinkProvider::getLink('delBoxcontent', array('articleid'=>$articleRecord['id'], "langcode"=>"")));
			return $tpl;
		}

		protected function getArticlesHasNoLanguageTemplate($articleRecord)
		{
			$tpl = BaseAdminPage::loadTemplateFile("boxcontent_articles_hasnolanguage.tpl.html");
			$tpl->setVariable('boxcontent_link_delfullarticle', HydraLinkProvider::getLink('delBoxcontent', array('articleid'=>$articleRecord['id'], "langcode"=>"")));
			return $tpl;
		}
		
		/**
		 * Ha a lista oldal class-át terjeszted ki és változtatsz a viselkedésen, akkor
		 * ezáltal megváltozik az oldalra mutató link is. Ilyenkor ezt a metódust is írd
		 * felül és add meg a helyes linket!
		 * 
		 * @param array $parseArray ezzel oldja fel a linket, alapestben te is ezzel oldod fel az új linket, de persze el is térhetsz
		 * @return string
		 */
		protected function getListPageLink($parseArray)
		{
			return HydraLinkProvider::getLink('link_boxcontents', $parseArray);			
		}
		
		function enterPage()
		{
			parent::enterPage();
			
			// nézzük mi jött típusnak!
			$type = FunctionLibrary::getGetValueSmart("atype", ARTICLE_TYPE_BOXCONTENT);
			$_SESSION["_articleType"] = intval($type);
		}
		
		/**
		 * Feltölti session-ből az aktuális működési változókat
		 *
		 */
		protected function _init()
		{
			parent::_init();

			$this->orderBy = FunctionLibrary::getSessionValue("_articleOrderBy", array("worktitle asc"));
			
			$this->hiddenColumns = array("publishdate", "link");
		}
		
		
		protected function getEditarticleLink($articleRecord)
		{
			if($this->currentArticleType == ARTICLE_TYPE_BOXCONTENT)
				return HydraLinkProvider::getLink('editBoxcontent', array('articlesiteid'=>$articleRecord['site_id'], 'articleid'=>$articleRecord['id'], "langcode"=>AdminBase::getCurrentEditlang(), "isnewarticle"=>"0"));
			else
				return "#";
		}
		
		protected function getEditNewArticleLink($articleId, $siteId, $langcode)
		{
			if($this->currentArticleType == ARTICLE_TYPE_BOXCONTENT)
				return HydraLinkProvider::getLink('editBoxcontent', array('articlesiteid'=>$siteId, 'articleid'=>$articleId, "langcode"=>$langcode, "isnewarticle"=>"1"));
			else
				return "#";
		}
		
		/**
		 * Törli a cikket. De itt most nem biztos h rögtön törli a cikket, nézzük mi használja!
		 *
		 */
		protected function action_startDelContent()
		{
			$langcode = FunctionLibrary::getGetValueSmart("lngcode", "");
			$articleId = FunctionLibrary::getGetValueSmart("id", null);
			$articleId = intval($articleId);
			$realDelLink = HydraLinkProvider::getLink('delArticle', array('articleid'=>$articleId, "langcode"=>$langcode));
			
			// nézzük használatban van-e és ha igen akkor hol
			// a dolog nem triviális mert vagy komplett törölték a content-et vagy csak az egyik nyelven
			if(empty($langcode))
				$langcodes = array_keys(AdminBase::getEditLanguages());
			else
				$langcodes = array($langcode);
			
			$allBoxContentLists = null;
			foreach($langcodes as $lngcode)
			{
				$boxContentLists = BoxHandler::getBoxContentListsWhereArticleIsUsed($articleId, $lngcode);
				$allBoxContentLists = FunctionLibrary::arrayConcatenate($allBoxContentLists, $boxContentLists);
			}
			if(!empty($allBoxContentLists))
			{
				// na, hát ez biza használatban van box content listákon
				// végigmegyünk rajtuk, és nézzük meg hogy mi lenne ha tényleg törölnénk az elemeket...
				$allMsgs = null;
				foreach($allBoxContentLists as $boxContentListObj)
				{
					$warnMsgs = $boxContentListObj->checkObjectIfMemberArticleIsDeleted($articleId);
					if(!empty($warnMsgs))
					{
						// itt kiegészítjük a warningot a nyelvvel, h lássa szerencsétlen h az adott content-list melyik site nyelven van
						for($i=0; $i<count($warnMsgs); $i++)
						{
							$warnMsgs[$i] = Language::getReadableFormat($boxContentListObj->langcode)." - ". $warnMsgs[$i];
						}
					}
					$allMsgs = FunctionLibrary::arrayConcatenate($allMsgs, $warnMsgs);
				}
				if(!empty($allMsgs))
				{
					// na az van, hogy bizony lennének warningjaink... mutassuk meg a usernek mi lenne!
					$htmlWarnings = TextHandler::getParsedText("arboxc_del_warings", array("warnings"=>TextUtil::arrayToHtmlList($allMsgs)));
					// ez eddig fasza, csak ez egy js confirm lesz, úgyhogy konvertáljuk a szöveget...
					// ennek folyamán a <li> elemeket "- "-vel kezdjük
					$htmlTagsOverride = 
						array(
							"li" => new HtmlTag("li",false,"l",false,"\n - "),
							"b" => new HtmlTag("b",false,"",false,"\"", "\""),
						);
					$textWarnings = TextUtil::removeHtmlTagsSmart($htmlWarnings, "\\n", null, null, $htmlTagsOverride);
					$this->setConfirm($textWarnings, $realDelLink, HydraLinkProvider::getLink("link_boxcontents", array()));
				}
				else
				{
					// nincs semmi warning...
					$this->action_delArticle();
				}
			}
			else
			{
				// nincs használva, úgyhogy ténylegesen törölhetjük, nincs következménye
				$this->action_delArticle();
			}
		}
		
	}
	
?>